package com.kangye.enterprise.frontdesk.util;

import lombok.Data;
import org.springframework.stereotype.Repository;

import java.util.List;

/**
 * @program: bar
 * @description: json接收工具类
 * @author:
 * @create: 2021-04-28 17:11
 **/
@Data
@Repository
public class ViewJsonObject<T> {

    private List<T> data; //返回集合
    private Integer code;
    private String msg;
    private Long count;


    /**
     * 没有数据返回
     * 默认状态码为0
     */
    public ViewJsonObject() {
        status(null,0,"操作成功",0l);
    }
    /**
     * 没有数据返回,人为指定状态,信息
     * @param code : 状态码
     * @param msg : 返回信息说明
     */
    public ViewJsonObject(Integer code, String msg) {
        status(null,code,msg,0l);
    }


    /**
     * 纯返回数据,没有总条数
     * @param data
     */
    public ViewJsonObject(List<T> data) {
        status(data,0,"操作成功",0l);
    }

    /**
     * 返回数据和总条数
     * @param data
     * @param count
     */
    public ViewJsonObject(List<T> data, Long count) {
        status(data,0,"操作成功",count);
    }

    /**
     * 返回数据和提示信息
     * @param data
     * @param msg
     */
    public ViewJsonObject(List<T> data, String msg) {
        status(data,0,msg,0l);
    }

    /**
     * 返回数据总条数和提示信息
     * @param data
     * @param msg
     * @param count
     */
    public ViewJsonObject(List<T> data, Long count, String msg) {
        status(data,0,msg,count);
    }

    /**
     * 返回数据,总条数,状态码和提示信息
     * @param data
     * @param count
     * @param code
     * @param msg
     */
    public ViewJsonObject(List<T> data, Long count, Integer code, String msg) {
        status(data,code,msg,count);
    }


    /*封装状态码*/
    private void status(List<T> data, Integer code, String msg, Long count){
        this.data = data;
        this.count = count;
        this.code = code;
        this.msg = msg;
    }
}
